// Estruturas para criacao e controle da janela de salvamento de arquivos
#ifndef SAVEFILE
#define SAVEFILE

#include <string.h>
#include <GL/glut.h>
#include <glui.h>
#include <stdio.h> 

#include "vetores.h"

extern void savegraf(int fmt, FILE *arq);
extern void vetoresPrint_PS(FILE *arq);

int tipo;	//salvar graficos .csv (engl)		-	0 (retirada)
			//salvar graficos .csv				-	1
			//salvar graficos .mat				-	2
			//salvar vetores em .eps			-	3
			//salvar fmmtcir rotor/estator em .eps	-	4
			//salvar fmmtcir resultante em .eps		-	5
			//salvar fmmtplan em .eps			-	6
bool saved;						// controle de salvamento
int jans=0;						// handle para a janela
GLUI			*save;			// janela de save
GLUI_EditText	*path;			// campo para o path
GLUI_Button		*bot_ok,		// botao de ok
				*bot_cancel;	// botao de cancel
GLUI_StaticText *msg;			// label para instrucao

// callback para tratamento do pressionamento dos botoes
// id = 0		-->		botao de ok
// id = 1		-->		botao de cancel
void botoes(int cmd)
{
	FILE *arq;
	
	if (cmd==0 && saved==false) //botao de ok
	{
		arq=fopen(path->get_text(),"wt");
		if(arq==NULL)
		{
			saved=true;
			msg->set_text(MSG125);
			path->disable();
		}
		else
		{
			//if (tipo==0) savegraf(0, arq); retirada
			if (tipo==1) savegraf(1, arq);
			if (tipo==2) savegraf(2, arq);
			if (tipo==3) vetoresPrint_PS(arq);
			/*if (tipo==4) printFmms_ps(arq);
			if (tipo==5) printFmms_ps(arq);
   		    if (tipo==6) printFmms_ps(arq);*/
			saved=true;
			msg->set_text(MSG126);
			path->disable();
			fclose(arq);
		}
	}
	else
	{
		path->enable();
		saved=false;
		jans=glutGetWindow();
		glutHideWindow();
	}	
}


void constroisave(void)
{
	
	save = GLUI_Master.create_glui(MSG127);

	msg = save->add_statictext("");
	msg->set_w(300);
	msg->set_alignment(GLUI_ALIGN_LEFT);

	path = save->add_edittext(MSG128, GLUI_EDITTEXT_TEXT, 0, NULL);
	path->set_w(300);
	path->set_alignment(GLUI_ALIGN_LEFT);

	GLUI_Panel *p = save->add_panel("", GLUI_PANEL_NONE);
	p->set_w(300);

	bot_ok = save->add_button_to_panel(p, MSG129, 0, botoes);
	bot_ok->set_w(70);

	save->add_column_to_panel (p, false);
	GLUI_Panel *p2 = save->add_panel_to_panel(p, "", GLUI_PANEL_NONE);
	p2->set_w(100);
	save->add_column_to_panel (p, false);

	bot_cancel = save->add_button_to_panel(p, MSG130, 1, botoes);
	bot_cancel->set_w(70);
}

void jansave (int ident)
{
  char temp[200];
	
  tipo=ident;
  if (jans==0) constroisave();
  switch(ident)
  {
  case 2:
	  strcpy(temp,MSG131);
	  break;
  case 1:
	  strcpy(temp,MSG132);
	  break;
  /*case 0:
	  strcpy(temp,MSG133);
	  break; excluida */
  case 3:         
	  strcpy(temp,MSG134);
	  break;
  case 4:
	  strcpy(temp,MSG135);
	  break;
  case 5:
	  strcpy(temp,MSG136);
	  break;
  case 6:
	  strcpy(temp,MSG137);
	  break;
  }
   	  
  msg->set_text(temp);
  path->set_text("c:\\");
  path->enable();
  saved=false;
  glutSetWindow(jans);
  glutShowWindow();
}

#endif